package com.leo.java.interpreter;

import java.util.ArrayList;
import java.util.Iterator;

/**
 * 表达式节点类
 * @author xuexiaolei
 * @version 2018年01月06日
 */
public class ExpressionNode extends Node {
    private ArrayList<Node> list = new ArrayList<>();

    @Override public void interpret(Context context) {
        //循环处理Context中的标记
        while (true){
            //没有则退出
            if (context.currentToken() == null){
                break;
            }
            //如果标记为END，则不解释END并结束本次解释过程，可以继续之后的解释
            else if (context.currentToken().equals("END")){
                context.skipTOken("END");
                break;
            }
            //如果为其他标记，则解释标记并将其加入命令集合
            else{
                Node commandNode = new CommandNode();
                commandNode.interpret(context);
                list.add(commandNode);
            }
        }
    }

    @Override public void execute() {
        Iterator iterator = list.iterator();
        while (iterator.hasNext()){
            ((Node)iterator.next()).execute();
        }
    }
}
